package com.demo.common.base.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.demo.common.constant.Constant;
import com.demo.common.utils.CacheUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类基类
 * 定义各个对象的通用字段
 *
 * @author Zsx
 */
@Slf4j
@Data
@TableName("base")
public class BaseEntity implements Serializable {

    @TableId
    private Long id;

    /**
     * 组织id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long orgId;

    /**
     * 删除标识  0 正常 1 删除
     */
    @TableLogic
    private Integer isDel;

    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long creator;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 编辑人ID
     */
    @TableField(fill = FieldFill.UPDATE)
    private Long modifier;

    /**
     * 编辑时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date modifyTime;

    /**
     * 组织名称
     */
    @TableField(exist = false)
    private String orgName;

    /**
     * 创建人名称
     */
    @TableField(exist = false)
    private String creatorName;

    /**
     * 编辑人名称
     */
    @TableField(exist = false)
    private String modifierName;

    public String getOrgName() {
        return CacheUtils.getOrgCache(orgId).getOrgName();
    }

    public String getCreatorName() {
        return CacheUtils.getUserCache(creator).getRealName();
    }

    public String getModifierName() {
        return CacheUtils.getUserCache(modifier).getRealName();
    }

    public Integer getIsDel() {
        return isDel == null ? Constant.INT_N : isDel;
    }
}
